}
static void
-gtk_font_button_set_font_map (GtkFontButton *font_button,
- PangoFontMap *font_map)
+gtk_font_button_font_chooser_set_font_map (GtkFontChooser *chooser,
+ PangoFontMap *font_map)
{
+ GtkFontButton *font_button = GTK_FONT_BUTTON (chooser);
+
if (g_set_object (&font_button->priv->font_map, font_map))
{
PangoContext *context;
context = gtk_widget_get_pango_context (font_button->priv->font_label);
pango_context_set_font_map (context, font_map);
-
- g_object_notify (G_OBJECT (font_button), "font-map");
}
}
+static PangoFontMap *
+gtk_font_button_font_chooser_get_font_map (GtkFontChooser *chooser)
+{
+ GtkFontButton *font_button = GTK_FONT_BUTTON (chooser);
+
+ return font_button->priv->font_map;
+}
+
static void
gtk_font_button_font_chooser_notify (GObject *object,
GParamSpec *pspec,
iface->get_font_face = gtk_font_button_font_chooser_get_font_face;
iface->get_font_size = gtk_font_button_font_chooser_get_font_size;
iface->set_filter_func = gtk_font_button_font_chooser_set_filter_func;
+ iface->set_font_map = gtk_font_button_font_chooser_set_font_map;
+ iface->get_font_map = gtk_font_button_font_chooser_get_font_map;
}
G_DEFINE_TYPE_WITH_CODE (GtkFontButton, gtk_font_button, GTK_TYPE_BUTTON,
case PROP_SHOW_SIZE:
gtk_font_button_set_show_size (font_button, g_value_get_boolean (value));
break;
- case GTK_FONT_CHOOSER_PROP_FONT_MAP:
- gtk_font_button_set_font_map (font_button, g_value_get_object (value));
- break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
case PROP_SHOW_SIZE:
g_value_set_boolean (value, gtk_font_button_get_show_size (font_button));
break;
- case GTK_FONT_CHOOSER_PROP_FONT_MAP:
- g_value_set_object (value, font_button->priv->font_map);
- break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
TRUE,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
- /**
- * GtkFontChooser:font-map:
- *
- * A custom font map to use for this widget, instead of the
- * default one.
- *
- * Since: 3.18
- */
- g_object_interface_install_property (iface,
- g_param_spec_object ("font-map", P_("Font map"), P_("A custom PangoFontMap"),
- PANGO_TYPE_FONT_MAP,
- GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
/**
* GtkFontChooser::font-activated:
* @self: the object which received the signal
g_return_if_fail (GTK_IS_FONT_CHOOSER (fontchooser));
g_return_if_fail (fontmap == NULL || PANGO_IS_FONT_MAP (fontmap));
- g_object_set (fontchooser, "font-map", fontmap, NULL);
+ if (GTK_FONT_CHOOSER_GET_IFACE (fontchooser)->set_font_map)
+ GTK_FONT_CHOOSER_GET_IFACE (fontchooser)->set_font_map (fontchooser, fontmap);
}
/**
PangoFontMap *
gtk_font_chooser_get_font_map (GtkFontChooser *fontchooser)
{
- PangoFontMap *fontmap;
+ PangoFontMap *fontmap = NULL;
g_return_val_if_fail (GTK_IS_FONT_CHOOSER (fontchooser), NULL);
- g_object_get (fontchooser, "font-map", &fontmap, NULL);
+ if (GTK_FONT_CHOOSER_GET_IFACE (fontchooser)->get_font_map)
+ fontmap = GTK_FONT_CHOOSER_GET_IFACE (fontchooser)->get_font_map (fontchooser);
return fontmap;
}
void (* font_activated) (GtkFontChooser *chooser,
const gchar *fontname);
+ /* More methods */
+ void (* set_font_map) (GtkFontChooser *fontchooser,
+ PangoFontMap *map);
+ PangoFontMap * (* get_font_map) (GtkFontChooser *fontchooser);
+
/* Padding */
- gpointer padding[12];
+ gpointer padding[10];
};
GDK_AVAILABLE_IN_3_2
data_destroy);
}
+static void
+delegate_set_font_map (GtkFontChooser *chooser,
+ PangoFontMap *map)
+{
+ gtk_font_chooser_set_font_map (get_delegate (chooser), map);
+}
+
+static PangoFontMap *
+delegate_get_font_map (GtkFontChooser *chooser)
+{
+ return gtk_font_chooser_get_font_map (get_delegate (chooser));
+}
+
static void
delegate_notify (GObject *object,
GParamSpec *pspec,
g_object_class_override_property (klass,
GTK_FONT_CHOOSER_PROP_SHOW_PREVIEW_ENTRY,
"show-preview-entry");
- g_object_class_override_property (klass,
- GTK_FONT_CHOOSER_PROP_FONT_MAP,
- "font-map");
}
/**
iface->get_font_face = delegate_get_font_face;
iface->get_font_size = delegate_get_font_size;
iface->set_filter_func = delegate_set_filter_func;
+ iface->set_font_map = delegate_set_font_map;
+ iface->get_font_map = delegate_get_font_map;
}
/**
GTK_FONT_CHOOSER_PROP_FONT_DESC,
GTK_FONT_CHOOSER_PROP_PREVIEW_TEXT,
GTK_FONT_CHOOSER_PROP_SHOW_PREVIEW_ENTRY,
- GTK_FONT_CHOOSER_PROP_FONT_MAP,
GTK_FONT_CHOOSER_PROP_LAST
} GtkFontChooserProp;
GtkTreeModel *tree_model,
GtkTreeIter *iter,
gpointer user_data);
-static void gtk_font_chooser_widget_set_font_map (GtkFontChooserWidget *fontchooser,
- PangoFontMap *fontmap);
static void gtk_font_chooser_widget_iface_init (GtkFontChooserIface *iface);
case GTK_FONT_CHOOSER_PROP_SHOW_PREVIEW_ENTRY:
gtk_font_chooser_widget_set_show_preview_entry (fontchooser, g_value_get_boolean (value));
break;
- case GTK_FONT_CHOOSER_PROP_FONT_MAP:
- gtk_font_chooser_widget_set_font_map (fontchooser, g_value_get_object (value));
- break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
case GTK_FONT_CHOOSER_PROP_SHOW_PREVIEW_ENTRY:
g_value_set_boolean (value, gtk_font_chooser_widget_get_show_preview_entry (fontchooser));
break;
- case GTK_FONT_CHOOSER_PROP_FONT_MAP:
- g_value_set_object (value, fontchooser->priv->font_map);
- break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
static void
-gtk_font_chooser_widget_set_font_map (GtkFontChooserWidget *fontchooser,
- PangoFontMap *fontmap)
+gtk_font_chooser_widget_set_font_map (GtkFontChooser *chooser,
+ PangoFontMap *fontmap)
{
+ GtkFontChooserWidget *fontchooser = GTK_FONT_CHOOSER_WIDGET (chooser);
GtkFontChooserWidgetPrivate *priv = fontchooser->priv;
if (g_set_object (&priv->font_map, fontmap))
}
}
+static PangoFontMap *
+gtk_font_chooser_widget_get_font_map (GtkFontChooser *chooser)
+{
+ GtkFontChooserWidget *fontchooser = GTK_FONT_CHOOSER_WIDGET (chooser);
+ GtkFontChooserWidgetPrivate *priv = fontchooser->priv;
+
+ return priv->font_map;
+}
+
static void
gtk_font_chooser_widget_set_filter_func (GtkFontChooser *chooser,
GtkFontFilterFunc filter,
iface->get_font_face = gtk_font_chooser_widget_get_face;
iface->get_font_size = gtk_font_chooser_widget_get_size;
iface->set_filter_func = gtk_font_chooser_widget_set_filter_func;
+ iface->set_font_map = gtk_font_chooser_widget_set_font_map;
+ iface->get_font_map = gtk_font_chooser_widget_get_font_map;
}